package xyz.sekai52799.answer.a1601_a1800;

public class Question1702 {
//    给你一个二进制字符串 binary ，它仅有 0 或者 1 组成。你可以使用下面的操作任意次对它进行修改：
//
//    操作 1 ：如果二进制串包含子字符串 "00" ，你可以用 "10" 将其替换。
//    比方说， "00010" -> "10010"
//    操作 2 ：如果二进制串包含子字符串 "10" ，你可以用 "01" 将其替换。
//    比方说， "00010" -> "00001"
//    请你返回执行上述操作任意次以后能得到的 最大二进制字符串 。如果二进制字符串 x 对应的十进制数字大于二进制字符串 y 对应的十进制数字，那么我们称二进制字符串 x 大于二进制字符串 y 。
//
//
//
//    示例 1：
//
//    输入：binary = "000110"
//    输出："111011"
//    解释：一个可行的转换为：
//            "000110" -> "000101"
//            "000101" -> "100101"
//            "100101" -> "110101"
//            "110101" -> "110011"
//            "110011" -> "111011"

    // 直接构造
    // 想法是这样的，第一个操作，可以把0000000这种连续的0变成1111110
    // 第二个操作可以把后面的0往前移动，最终会与第一个操作留下的0相遇，变成10
    // 也就是其他的数全是1，大小只和0所在的位置有关，第一个0后面每有一个0，这个0的位置就能从第一个0原本的位置往后一位
    public String maximumBinaryString(String binary) {
        char[] charArray = binary.toCharArray();
        int zero = 0;
        int zeroIndex = binary.indexOf("0");
        if (zeroIndex == -1){
            return binary;
        }
        for (char c : charArray) {
            if (c == '0') {
                zero++;
            }
        }
        StringBuilder s = new StringBuilder();
        for (int i = 0; i < binary.length(); i++) {
            if (i == zeroIndex + zero - 1){
                s.append(0);
                continue;
            }
            s.append(1);
        }
        return s.toString();
    }
}
